草庐IT

ML 方法

全部标签

c# - 使用 Moq 来 stub 接口(interface)方法

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowtomockamethodthatreturnsanintwithMOQ这是我的界面:publicinterfaceICalenderService{DateTimeAdjust(DateTimedateToAdjust,BusinessDayConventionconvention,ListholidayCities);}我做了一些研究,看起来你可以很容易地模拟这个,但我想用Moq把它stub,这样我就可以把stub传递给我的其他类构造函数,让stub返回任何DateTime我想要它的Adjust方法

c# - Func 委托(delegate)不链接方法

让我们想象一下简单的委托(delegate)调用:voidMain(){Functfunc=null;tfunc+=Add;//bindfirstmethodtfunc+=Sub;//bindsecondmethodConsole.WriteLine(tfunc(2,2));}privatestringAdd(inta,intb){return"Add:"+(a+b).ToString();}privatestringSub(inta,intb){return"Sub:"+(a-b).ToString();}这个程序的结果是:Sub:0那么,为什么Add方法没有被调用呢?我希望先调用方

c# - 扩展方法 - 装饰者模式

我想知道我们是否可以将扩展方法视为C#中装饰器模式的实现?因为目标是一样的,但是实现的逻辑和概念可能不同?谢谢! 最佳答案 装饰器模式通常与独立于其他实例向类型的特定实例添加行为相关联。在扩展方法的情况下,它会影响在同一范围内编译的类型的所有实例。我认为它不是装饰器模式的一部分。 关于c#-扩展方法-装饰者模式,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15211385/

c# - 获取任何枚举值的扩展方法

我一直在尝试创建一个扩展方法,该方法适用于任何枚举,以返回其值。而不是这样做:Enum.GetValues(typeof(BiasCode)).Cast()这样做会很好:newBiasCode().Values()如果没有new会更好,但那是另一个问题。我有一个.NETfiddle有一个接近的解决方案(代码如下所示)。此代码的问题在于扩展方法返回List.我想让它返回枚举值本身的列表。返回List并不可怕;这只是意味着我必须转换结果。这有可能吗?我尝试使扩展方法通用,但遇到了问题。这是我所能得到的最接近的结果:usingSystem;usingSystem.Linq;usingSyst

c# - 有没有一种简单的方法来制作类的不可变版本?

有没有一种简单的方法可以使实例不可变?举个例子,我有一个包含很多数据字段的类(只有数据,没有行为):classMyObject{//lotsoffieldspainfultoinitializeallatonce//sowemakefieldsmutable:publicStringTitle{get;set;}publicStringAuthor{get;set;}//...}创建示例:MyObjectCreationExample(StringsomeParameters){varobj=newMyObject{Title="foo"//lotsoffieldsinitializa

c# - 解析电子邮件地址字符串的最佳方法

所以我正在处理一些电子邮件标题数据,对于to:、from:、cc:和bcc:字段,电子邮件地址可以用多种不同的方式表示:FirstLastLast,Firstname@domain.com这些变体可以出现在同一条消息中,以任何顺序出现,都在一个逗号分隔的字符串中:First,Last,name@domain.com,FirstLast我一直在尝试想出一种方法来将这个字符串解析为每个人的名字、姓氏和电子邮件(如果只提供电子邮件地址,则省略姓名)。有人可以建议最好的方法吗?我试过在逗号上拆分,除了在第二个例子中姓氏放在第一位外,它会起作用。我想这个方法可以工作,如果在我拆分之后,我检查每个

c# - 如果单元格可能为空,从数据行读取的正确方法是什么

如果数据行(dr)中的列为空,我有以下代码似乎会崩溃。从数据行中解析出值并处理空值检查的正确方法是什么?Personperson=newPerson(){FirstName=dr["FirstName"].ToString(),LastName=dr["LastName"].ToString(),BusinessPhoneNumber=dr["BusinessPhone"].ToString(), 最佳答案 如果该列是字符串类型,但可以为空,那么尝试://FirstNamemustallownullFirstName=dr["Fir

c# - Application.Quit() 方法无法清除进程

我已经看到很多从Google搜索返回的关于此的帖子,但其中引用的解决方案都没有为我解决这个问题。所以,我想我自己试试。在这段代码之后:PowerPoint.ApplicationpowerPoint=newMicrosoft.Office.Interop.PowerPoint.Application();powerPoint.Visible=Office.MsoTriState.msoTrue;Microsoft.Office.Interop.PowerPoint.Presentationppt=null;entercodehere我可以发出ppt.Quit();命令和Powerpoi

c# - .NET 中对以 1、10 和 2 开头的字符串进行排序并遵守数字顺序的最短方法是什么?

我需要按如下方式对文件名进行排序:1.log、2.log、10.log但是当我使用OrderBy(fn=>fn)时,它会将它们排序为:1.log,10.log,2.log我显然知道这可以通过编写另一个比较器来完成,但是有没有一种更简单的方法可以将字典顺序更改为自然排序顺序?编辑:目标是获得与在Windows资源管理器中选择“按名称排序”时相同的顺序。 最佳答案 您可以使用Win32CompareStringEx功能。在Windows7上,它支持您需要的排序。您将使用P/Invoke:staticreadonlyInt32NORM_I

c# - 如何使用反射调用通用扩展方法?

我写了扩展方法GenericExtension。现在我想调用扩展方法Extension。但是methodInfo的值始终为null。publicstaticclassMyClass{publicstaticvoidGenericExtension(thisForma,stringb)whereT:Form{//code...}publicstaticvoidExtension(thisForma,stringb,Typec){MethodInfomethodInfo=typeof(Form).GetMethod("GenericExtension",new[]{typeof(strin